package com.xiaoh.dormitoryrepairreportbackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaoh.dormitoryrepairreportbackend.model.entity.GeneralUser;

/**
 * 统一用户表 服务类
 */
public interface GeneralUserService extends IService<GeneralUser> {

    /**
     * 用户登录
     *
     * @param accountName 账号
     * @param password    密码
     * @return 用户信息
     */
    GeneralUser userLogin(String accountName, String password);

    /**
     * 用户注册
     *
     * @param generalUser 用户信息
     * @return 用户ID
     */
    Long userRegister(GeneralUser generalUser);

    /**
     * 根据账号获取用户
     *
     * @param accountName 账号
     * @return 用户信息
     */
    GeneralUser getUserByAccountName(String accountName);

    /**
     * 根据邮箱获取用户
     *
     * @param email 邮箱
     * @return 用户信息
     */
    GeneralUser getUserByEmail(String email);

    /**
     * 根据手机号获取用户
     *
     * @param phoneNumber 手机号
     * @return 用户信息
     */
    GeneralUser getUserByPhoneNumber(String phoneNumber);

    /**
     * 更新用户信息
     *
     * @param userId 用户ID
     * @param nickName 昵称
     * @param email 邮箱
     * @param phoneNumber 手机号
     * @return 是否成功
     */
    boolean updateUserInfo(Long userId, String nickName, String email, String phoneNumber);

    /**
     * 修改用户密码
     *
     * @param userId 用户ID
     * @param oldPassword 原密码
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean updatePassword(Long userId, String oldPassword, String newPassword);

    /**
     * 管理员更新用户信息（包括用户类型）
     *
     * @param userId 用户ID
     * @param nickName 昵称
     * @param email 邮箱
     * @param phoneNumber 手机号
     * @param userType 用户类型
     * @param dormitoryName 宿舍地址（仅学生用户）
     * @return 是否成功
     */
    boolean adminUpdateUserInfo(Long userId, String nickName, String email, String phoneNumber, Integer userType, String dormitoryName);
}
